subroutine print_event_table(nunit)
  use param
  use event_param
  use table_param,only:sim_obj
  use table_param,only:event_table
  use table_param,only:n_event_table
  use table_param,only:total_alloc_event_table
  use label_data_param,only:obj_type
  implicit none

  integer,intent(in) :: nunit

  integer :: i,sid,in1,in2,in3,pos1,pos2,width
  character(len=len_linebuf) :: str

  in1=1
  in2=2
  in3=3
  width=90

  call log_msg1(nunit,"")
  call log_msg1(nunit,"List of event table")
  call log_msg1(nunit,"")

  pos1=0

  pos2=pos1+21
  write(str(pos1+1:pos2),'("n_event_table=",i7)') n_event_table
  pos1=pos2

  pos2=pos1+41
  write(str(pos1+1:pos2),'(10x,&
       "total_alloc_event_table=",i7)') total_alloc_event_table
  pos1=pos2

  call log_msg1_indent(nunit,in1,str(1:pos2))

  ! Draw the header
  call drawline(nunit,in1,width)
  pos1=0
  
  pos2=pos1+10
  write(str(pos1+1:pos2),'("index",5x)')
  pos1=pos2

  pos2=pos1+13
  write(str(pos1+1:pos2),'("event_type",3x)')
  pos1=pos2

  pos2=pos1+7
  write(str(pos1+1:pos2),'("obj1",3x)')
  pos1=pos2
  
  pos2=pos1+7
  write(str(pos1+1:pos2),'("seq1",3x)')
  pos1=pos2

  pos2=pos1+7
  write(str(pos1+1:pos2),'("obj2",3x)')
  pos1=pos2

  pos2=pos1+7
  write(str(pos1+1:pos2),'("seq2",3x)')
  pos1=pos2

  pos2=pos1+7
  write(str(pos1+1:pos2),'("sqnc",3x)')
  pos1=pos2

  pos2=pos1+9
  write(str(pos1+1:pos2),'("react_id",1x)')
  pos1=pos2

  pos2=pos1+2
  write(str(pos1+1:pos2),'("s",1x)')
  pos1=pos2

  pos2=pos1+7
  write(str(pos1+1:pos2),'("pid",4x)')
  pos1=pos2

  pos2=pos1+7
  write(str(pos1+1:pos2),'("pid2",3x)')
  pos1=pos2

  pos2=pos1+7
  write(str(pos1+1:pos2),'("spontid")')
  pos1=pos2

  call log_msg1_indent(nunit,in1,str(1:pos2))
  call drawline(nunit,in1,width)

  ! Show the table
  do i=1,n_event_table
     pos1=0

     pos2=pos1+10
     write(str(pos1+1:pos2),'("[",i8.8,"]")') i
     pos1=pos2

     if (event_table(i)%removed) then
        pos2=pos1+21
        write(str(pos1+1:pos2),'(10x,"-",1x,"removed",1x,"-")')
        pos1=pos2
     else
        select case(event_table(i)%event_type)
        case(diff_event)
           ! event_type
           pos2=pos1+13
           write(str(pos1+1:pos2),'(1x,"<diff_event>")')
           pos1=pos2

           ! sid (obj1)
           sid=event_table(i)%obj1
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') sid
           pos1=pos2

           ! eid (obj_seq1)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj_seq1
           pos1=pos2

           ! obj2,obj_seq2,sqnc,rid
           pos2=pos1+30
           write(str(pos1+1:pos2),'(30x)')
           pos1=pos2

           ! is_spontaneous
           if (event_table(i)%is_spontaneous) then
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"T")')
              pos1=pos2

              pos2=pos1+14
              write(str(pos1+1:pos2),'(14x)')
              pos1=pos2

              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%spont_table_index
              pos1=pos2
           else
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"F")')
              pos1=pos2

              ! pid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_index
              pos1=pos2

              ! pid2
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_seq
              pos1=pos2

              ! spontid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(7x)')
              pos1=pos2
           end if
        case(diss_event)
           ! event_type
           pos2=pos1+13
           write(str(pos1+1:pos2),'(1x,"<diss_event>")')
           pos1=pos2

           ! sid (obj1)
           sid=event_table(i)%obj1
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') sid
           pos1=pos2

           ! eid (obj_seq1)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj_seq1
           pos1=pos2

           ! obj2,obj_seq2
           pos2=pos1+14
           write(str(pos1+1:pos2),'(14x)')
           pos1=pos2

           ! diss type (sqnc)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%sqnc
           pos1=pos2

           ! rid
           pos2=pos1+9
           write(str(pos1+1:pos2),'(9x)')
           pos1=pos2

           ! is_spontaneous
           if (event_table(i)%is_spontaneous) then
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"T")')
              pos1=pos2

              pos2=pos1+14
              write(str(pos1+1:pos2),'(14x)')
              pos1=pos2

              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%spont_table_index
              pos1=pos2
           else
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"F")')
              pos1=pos2

              ! pid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_index
              pos1=pos2

              ! pid2
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_seq
              pos1=pos2

              ! spont_id
              pos2=pos1+7
              write(str(pos1+1:pos2),'(7x)')
              pos1=pos2
           end if
        case(rctn_event)
           ! event_type
           pos2=pos1+13
           write(str(pos1+1:pos2),'(1x,"<rctn_event>")')
           pos1=pos2

           ! sid1 (obj1)
           sid=event_table(i)%obj1
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') sid
           pos1=pos2

           ! eid (obj_seq1)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj_seq1
           pos1=pos2

           ! sid2/label (obj2)
           sid=event_table(i)%obj2
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') sid
           pos1=pos2

           ! obj_seq2
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj_seq2
           pos1=pos2

           ! react type (sqnc)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%sqnc
           pos1=pos2

           ! react_index
           pos2=pos1+9
           write(str(pos1+1:pos2),'(1x,i8)') &
                event_table(i)%react_index
           pos1=pos2

           ! is_spontaneous
           if (event_table(i)%is_spontaneous) then
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"T")')
              pos1=pos2

              pos2=pos1+14
              write(str(pos1+1:pos2),'(14x)')
              pos1=pos2

              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%spont_table_index
              pos1=pos2
           else
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"F")')
              pos1=pos2

              ! pid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_index
              pos1=pos2

              ! pid2
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_seq
              pos1=pos2

              ! spontid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(7x)')
              pos1=pos2
           end if
        case(extn_event)
           ! event_type
           pos2=pos1+13
           write(str(pos1+1:pos2),'(1x,"<extn_event>")')
           pos1=pos2

           ! index of external event (obj1)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj1
           pos1=pos2

           pos2=pos1+39
           write(str(pos1+1:pos2),'(39x)')
           pos1=pos2

           ! profile index
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%profile_table_index
           pos1=pos2

           pos2=pos1+14
           write(str(pos1+1:pos2),'(14x)')
           pos1=pos2
        case(sink_event)
           ! event type
           pos2=pos1+13
           write(str(pos1+1:pos2),'(1x,"<sink_event>")')
           pos1=pos2

           ! sid (obj1)
           sid=event_table(i)%obj1
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') sid
           pos1=pos2

           ! eid (obj_seq1)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj_seq1
           pos1=pos2

           ! gid (obj2)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj2
           pos1=pos2
           
           ! sqnc (obj_seq2)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj_seq2
           pos1=pos2

           ! sqnc
           pos2=pos1+7
           write(str(pos1+1:pos2),'(7x)')
           pos1=pos2

           ! sink_type
           pos2=pos1+9
           write(str(pos1+1:pos2),'(1x,i8)') &
               event_table(i)%react_index
           pos1=pos2

           ! is_spontaneous
           if (event_table(i)%is_spontaneous) then
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"T")')
              pos1=pos2

              pos2=pos1+14
              write(str(pos1+1:pos2),'(14x)')
              pos1=pos2

              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%spont_table_index
              pos1=pos2
           else
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"F")')
              pos1=pos2

              ! pid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_index
              pos1=pos2

              ! pid2
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_seq
              pos1=pos2

              ! spontid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(7x)')
              pos1=pos2
           end if
        case(srce_event)
           ! event_type
           pos2=pos1+13
           write(str(pos1+1:pos2),'(1x,"<srce_event>")') 
           pos1=pos2

           ! geom_obj_id (obj1)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj1
           pos1=pos2

           ! diss_type (obj_seq1)
           pos2=pos1+7
           write(str(pos1+1:pos2),'(1x,i6)') &
                event_table(i)%obj_seq1
           pos1=pos2

           pos2=pos1+30
           write(str(pos1+1:pos2),'(30x)')
           pos1=pos2

           ! is_spontaneous
           if (event_table(i)%is_spontaneous) then
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"T")')
              pos1=pos2

              pos2=pos1+14
              write(str(pos1+1:pos2),'(14x)')
              pos1=pos2

              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%spont_table_index
              pos1=pos2
           else
              pos2=pos1+2
              write(str(pos1+1:pos2),'(1x,"F")')
              pos1=pos2

              ! pid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_index
              pos1=pos2

              ! pid2
              pos2=pos1+7
              write(str(pos1+1:pos2),'(1x,i6)') &
                   event_table(i)%profile_table_seq
              pos1=pos2

              ! spontid
              pos2=pos1+7
              write(str(pos1+1:pos2),'(7x)')
              pos1=pos2
           end if
        end select
     end if

     call log_msg1_indent(nunit,in1,str(1:pos2))

  end do

  call drawline(nunit,in1,width)

  return

end subroutine print_event_table
